Er zijn veel ETL-taken die je misschien wilt <\/STRONG> activeren vanuit je map<\/STRONG> en het patroon dat we in deze blog zullen verkennen, zal je daarbij helpen.<\/P>Hier is een use case, het uitvoeren van een ETL-webtool die gebiedskenmerken van een kaart als invoer accepteert<\/STRONG>. De webtool bouwt toevallig een mobiele geodatabase die wordt teruggegeven aan mijn Pro-sessie of Experience Builder-analysewidget als een lokaal bestand, maar je kunt ETL-gegevens van overal naar overal<\/STRONG> doen, in elk formaat. De gegevens hoeven niet in je kaart te staan, of zelfs niet in je ArcGIS Pro-project.<\/STRONG><\/P>Spoiler<\/a> (Markeer om te lezen)<\/noscript>Let op: de webtool zoals hier getoond zal geen mobiele geodatabase teruggeven wanneer deze wordt uitgevoerd in map viewer, deze moet eerst worden gezipt. Dit is eenvoudig te doen met de mobile geodatabase writer, schrijf gewoon met de bestandsnaamextensie .geodatabase.zip en er wordt automatisch een ZIP-bestand gemaakt.<\/div>Let op: de webtool zoals hier getoond zal geen mobiele geodatabase teruggeven wanneer deze wordt uitgevoerd in map viewer, deze moet eerst worden gezipt. Dit is eenvoudig te doen met de mobile geodatabase writer, schrijf gewoon met de bestandsnaamextensie .geodatabase.zip en er wordt automatisch een ZIP-bestand gemaakt.<\/div><\/div><\/noscript><\/div><\/div>Een ETL-webtool uitvoeren in Pro<\/span><\/span><\/P>De blogdownload bevat mijn voorbeeld toolbox, dus laten we de stappen doorlopen. Er is een modeltool en een ETL-tool in de toolbox van de blogdownload, het model wikkelt de ETL-tool in. Ik gebruikte ArcGIS Pro 3.6 en natuurlijk ArcGIS Data Interoperability voor Pro 3.6.<\/P>ModelBuilder wikkelt de ETL in<\/span><\/span><\/P>Dingen beginnen met een FeatureSet-invoerveld<\/STRONG>, in mijn geval met polygonale geometrie bedoeld als het gebied(en) van interesse met elk aantal Amerikaanse steden. Tijdens runtime kun je hiermee kiezen uit een kaartlaag, bladeren naar gegevens of je eigen kenmerken helemaal zelf maken. De FeatureSet wordt vervolgens geschreven als EsriJSON-gegevens naar het pad %scratchFolder%\\esri.json. <\/STRONG>Als je niet bekend bent met ModelBuilder inline variabelensubstitutie, lees er hier over<\/A>. Wanneer de tool lokaal draait, bevindt dit pad zich in de project scratch folder, en wanneer het een webtool is, in de job scratch folder.<\/P>Nu even tijdreizen. Stel je voor dat je het bovenstaande model bouwt en alles wat je hebt is de FeatureSet-invoer en de Features to JSON-tool in het model. Sla op en voer uit en je hebt een bestand esri.json in je scratch folder. Bouw nu je ETL-tool (ingebed, in dezelfde toolbox als het model) die doet wat jij wilt gegeven de EsriJSON-invoer. Hier is die van mij.<\/P>ETL die EsriJSON leest en dingen doet<\/span><\/span><\/P>Zoals de annotatie zegt, brengt een EsriJSON-lezer (NB: met enkele padinvoereigenschap) mijn kaartinvoer binnen, worden de features samengevoegd (ik wil één feature, multipart is OK) en vervolgens geprojecteerd zoals ik nodig heb in mijn downstream verwerking. In mijn geval wordt het resulterende feature gebruikt als initiator en ruimtelijke filter in een FeatureReader, die wat data uit Living Atlas haalt en schrijft naar een mobiele geodatabase met dynamisch schema<\/A>. Er zit echter een trucje in het pad van de data.<\/P>Hier bewerk ik gebruikersparameters in de ETL-tool en de bovenste is een gescripte parameter SCRATCHFOLDER die krijgt wat ArcPy gebruikt, lokaal in Pro of in een jobfolder bij een webtool. Gescripte parameters worden geëvalueerd voordat enige dataverwerking plaatsvindt.<\/P>SCRATCHFOLDER gescripte parameter<\/span><\/span><\/P>De volgende parameter is het bronpad van het EsriJSON-bestand, dat door het model wordt geleverd maar om zeker te zijn stel ik het standaardpad zo in dat het gebruikmaakt van de SCRATCHFOLDER gescripte parameter. Let op dat je de parameterstatus moet opslaan nadat je SCRATCHFOLDER hebt toegevoegd en het dialoogvenster opnieuw moet openen om de waarde te gebruiken in andere parameters.<\/P>EsriJSON invoerparameter<\/span><\/span><\/P>Nu het trucje: de uitvoer mobiele geodatabase wordt met overschrijfpermissie geschreven naar de scratch folder.<\/P>Mobiele geodatabase-uitvoer naar scratch folder<\/span><\/span><\/P>Terug naar het model. De ETL-tool is toegevoegd en het EsriJSON-bestand verbonden als invoer. De uitvoer van de ETL-tool wordt geschreven naar %scratchFolder%\\Extract.geodatabase.<\/P>Terug naar de toekomst<\\/span<\\/span<\\/P<P>De laatste stap is om een Calculate Value-modeltool toe te voegen die het uitvoerpad kopieert naar een nieuwe File-type parameter. Dit is noodzakelijk omdat de uitvoer Derived moet zijn voor een webtool om data terug te geven. Zorg ervoor dat de uitvoer van de ETL-tool niet op intermediate staat ingesteld in ModelBuilder anders krijg je geen uitvoer! Bekijk de Calculate Value-expressie, deze is nodig om het pad te beschermen tegen interpretatie als escape-tekens door ervoor te zorgen dat het een raw string is.<\\/P<P<span class=\lia-inline-image-display-wrapper lia-image-align-inline\ image-alt=\Calculate Value expression\ style=\width: 382px;\ >Calculate Value-expressie<\\/span<\\/p<P>Nadat ik enkele lokale testuitvoeringen had gedaan had ik een resultaat dat ik kon delen als webtool en vervolgens uitvoeren. Bij het delen van de webtool stelde ik het berichtniveau in op Info zodat ik de actie kan volgen. Ik gebruikte ArcGIS Enterprise 12.0, dat compatibel is met ArcGIS Pro 3.6. Zorg ervoor dat Data Interoperability op je server is geïnstalleerd en alle pakketten en referenties geïnstalleerd zijn<\\A> op de server door de arcgis service owner user<\\STRONG>. Het is goede praktijk om fmeworkbench.exe als arcgis service owner user<\\EM> (in de Data Interoperability-installatie) op de server te openen en lezers en schrijvers te testen die je gaat gebruiken.<\\/p<P<span class=\lia-inline-image-display-wrapper lia-image-align-inline\ style="width: 999px;">Gegevens worden geretourneerd
Een ETL-webtool uitvoeren in Pro<\/span><\/span><\/P>De blogdownload bevat mijn voorbeeld toolbox, dus laten we de stappen doorlopen. Er is een modeltool en een ETL-tool in de toolbox van de blogdownload, het model wikkelt de ETL-tool in. Ik gebruikte ArcGIS Pro 3.6 en natuurlijk ArcGIS Data Interoperability voor Pro 3.6.<\/P>ModelBuilder wikkelt de ETL in<\/span><\/span><\/P>Dingen beginnen met een FeatureSet-invoerveld<\/STRONG>, in mijn geval met polygonale geometrie bedoeld als het gebied(en) van interesse met elk aantal Amerikaanse steden. Tijdens runtime kun je hiermee kiezen uit een kaartlaag, bladeren naar gegevens of je eigen kenmerken helemaal zelf maken. De FeatureSet wordt vervolgens geschreven als EsriJSON-gegevens naar het pad %scratchFolder%\\esri.json. <\/STRONG>Als je niet bekend bent met ModelBuilder inline variabelensubstitutie,
Nu even tijdreizen. Stel je voor dat je het bovenstaande model bouwt en alles wat je hebt is de FeatureSet-invoer en de Features to JSON-tool in het model. Sla op en voer uit en je hebt een bestand esri.json in je scratch folder. Bouw nu je ETL-tool (ingebed, in dezelfde toolbox als het model) die doet wat jij wilt gegeven de EsriJSON-invoer. Hier is die van mij.<\/P>
ETL die EsriJSON leest en dingen doet<\/span><\/span><\/P>Zoals de annotatie zegt, brengt een EsriJSON-lezer (NB: met enkele padinvoereigenschap) mijn kaartinvoer binnen, worden de features samengevoegd (ik wil één feature, multipart is OK) en vervolgens geprojecteerd zoals ik nodig heb in mijn downstream verwerking. In mijn geval wordt het resulterende feature gebruikt als initiator en ruimtelijke filter in een FeatureReader, die wat data uit Living Atlas haalt en schrijft naar een mobiele geodatabase met
Hier bewerk ik gebruikersparameters in de ETL-tool en de bovenste is een gescripte parameter SCRATCHFOLDER die krijgt wat ArcPy gebruikt, lokaal in Pro of in een jobfolder bij een webtool. Gescripte parameters worden geëvalueerd voordat enige dataverwerking plaatsvindt.<\/P>
SCRATCHFOLDER gescripte parameter<\/span><\/span><\/P>De volgende parameter is het bronpad van het EsriJSON-bestand, dat door het model wordt geleverd maar om zeker te zijn stel ik het standaardpad zo in dat het gebruikmaakt van de SCRATCHFOLDER gescripte parameter. Let op dat je de parameterstatus moet opslaan nadat je SCRATCHFOLDER hebt toegevoegd en het dialoogvenster opnieuw moet openen om de waarde te gebruiken in andere parameters.<\/P>EsriJSON invoerparameter<\/span><\/span><\/P>Nu het trucje: de uitvoer mobiele geodatabase wordt met overschrijfpermissie geschreven naar de scratch folder.<\/P>Mobiele geodatabase-uitvoer naar scratch folder<\/span><\/span><\/P>Terug naar het model. De ETL-tool is toegevoegd en het EsriJSON-bestand verbonden als invoer. De uitvoer van de ETL-tool wordt geschreven naar %scratchFolder%\\Extract.geodatabase.<\/P>Terug naar de toekomst<\\/span<\\/span<\\/P<P>De laatste stap is om een Calculate Value-modeltool toe te voegen die het uitvoerpad kopieert naar een nieuwe File-type parameter. Dit is noodzakelijk omdat de uitvoer Derived moet zijn voor een webtool om data terug te geven. Zorg ervoor dat de uitvoer van de ETL-tool niet op intermediate staat ingesteld in ModelBuilder anders krijg je geen uitvoer! Bekijk de Calculate Value-expressie, deze is nodig om het pad te beschermen tegen interpretatie als escape-tekens door ervoor te zorgen dat het een raw string is.<\\/P<P<span class=\lia-inline-image-display-wrapper lia-image-align-inline\ image-alt=\Calculate Value expression\ style=\width: 382px;\ >Calculate Value-expressie<\\/span<\\/p<P>Nadat ik enkele lokale testuitvoeringen had gedaan had ik een resultaat dat ik kon delen als webtool en vervolgens uitvoeren. Bij het delen van de webtool stelde ik het berichtniveau in op Info zodat ik de actie kan volgen. Ik gebruikte ArcGIS Enterprise 12.0, dat compatibel is met ArcGIS Pro 3.6. Zorg ervoor dat Data Interoperability op je server is geïnstalleerd en alle
Ik heb geen bestandstoewijzingen voor .geodatabase-bestanden, maar ik kan de link openen in Data Inspector:
Mobiele geodatabase in Data Inspector
Nu heb ik een ETL webtool die ik met mijn collega’s kan delen! Over collega’s gesproken, ik ben @SashaLockamy dankbaar voor haar hulp bij het samenstellen hiervan.
Voor de duidelijkheid, de stappen om mijn webtool te bouwen waren:
Laat alsjeblieft een reactie achter in het bericht met je ervaringen.
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.